home *** CD-ROM | disk | FTP | other *** search
Text File | 1996-07-09 | 3.8 KB | 196 lines | [TEXT/ds30] |
- /**********************************************************************/
- /* */
- /* DAL Session Startup Script */
- /* This script is executed every time a new session is created */
- /* */
- /**********************************************************************/
-
-
- print "/*";
- print "Executing Startup Script...";
- print "Loading procedure 'showall' - the better 'printall'...";
- print "*/";
- /* Better 'printall' */
- /*
- the show procedure:
- Author: Dirk Strack 7.2.92 updated 14.6.95
-
- after sending a select statement,
- call this procedure to display the selected
- information with column heading. if you select for extract,
- it will display the count of rows selected.
-
- example 1:
- select * from systables;
- show;
-
- example 2:
-
- declare cursor cur;
- declare timestamp start;
- start = $now();
- select * from systables into cur;
- print "select took", timemark(start), "seconds";
- start = $now();
- show(cur,9);
- print "show took", timemark(start), "seconds";
-
- example 3:
- select * from systables;
- show_row;
- show_row;
- */
-
- declare procedure timemark (start)
- returns varchar;
- argument timestamp start;
- {
- return decimal[10,2](float $now() - float start);
- }
- end procedure timemark;
-
- declare int maxcolsize = 22;
-
- declare procedure colsize(c, i)
- returns int;
- argument cursor c;
- argument int i;
- {
- int len;
- int nlen;
-
- len = $colwidth(c,i);
- nlen = $len($colname(c,i));
- if (len < nlen) len = nlen;
- if (len > maxcolsize) len = maxcolsize;
-
- return len;
- }
- end procedure colsize;
-
-
- declare procedure showall(c, size)
- argument cursor c = $cursor;
- argument int size = 22;
- {
- int i,j;
- int len;
- maxcolsize = size;
- varchar buf;
-
- if ($rowcnt is not null)
- print char[10] $rowcnt + " rows selected";
-
- print "";
- buf = "";
- for (i = 1; i <= $cols(c); i++)
- {
- buf = buf + (char[colsize(c, i)] $colname(c,i)) + "|";
- }
- print buf;
- buf = "";
- for (i = 1; i <= $cols(c); i++)
- {
- len = colsize(c, i);
- for (j = 10; j <= len; j = j + 10)
- buf = buf + "----------";
- buf = buf + $substr("----------", 1, len % 10) + "|";
- }
-
- print buf;
- for each c
- {
- buf = "";
- for (i = 1; i <= $cols(c); i++)
- {
- len = colsize(c,i);
- if (c->:i is null)
- buf = buf + char[len] "??";
- else
- {
- switch($coltype(c, i))
- {
- case $boolean:
- switch (int c->:i)
- {
- case 0: buf = buf + char[len] "N";
- break;
- case 1: buf = buf + char[len] "Y";
- break;
- case 2: buf = buf + char[len] "??";
- break;
- case 3: buf = buf + char[len] "!!";
- }
- break;
- case $float:
- case $smfloat:
- buf = buf + char[len] (decimal[len,3] c->:i);
- break;
- case $timestamp:
- buf = buf + char[len] (varchar c->:i);
- break;
- case $varbin:
- buf = buf + $format("%*X", len, c->:i);
- break;
- default:
- buf = buf + char[len] c->:i;
- }
- }
- buf = buf + "|";
- }
- print buf;
- }
- }
- end procedure showall;
-
- declare procedure show_row(c)
- argument cursor c = $cursor;
- {
- declare int i, len;
- declare varchar buf;
-
- fetch next of c;
- if ($sqlcode = 0)
- {
- for (i = 1; i <= $cols(c); i++)
- {
- buf = $format("%-30s : ", $colname(c,i));
- len = $colwidth(c,i);
-
- if (c->:i is null)
- buf = buf + "??";
- else
- {
- switch($coltype(c, i))
- {
- case $boolean:
- buf = buf + $substr("NY?!", c->:i + 1, 1);
- break;
- case $float:
- case $smfloat:
- buf = buf + varchar (decimal[len,3] c->:i);
- break;
- case $varbin:
- buf = buf + $format("0x%X", c->:i);
- break;
- default:
- buf = buf + (varchar c->:i);
- }
- }
- print buf;
- }
- print "";
- }
- }
- end procedure show_row;
-
- declare procedure show(c, size)
- argument cursor c = $cursor;
- argument int size = 22;
- {
- showall(c, size);
- }
- end procedure show;
-
- /* End of startup script */
-